<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>PassJava博客-悟空聊架构-Java教程文档</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <meta name="description" content="Description">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <link rel="stylesheet" href="http://cdn.jayh.club/css/vue2.css">
  <link rel="stylesheet" href="http://cdn.jayh.club/css/style.css" />
  <link rel="stylesheet" href="http://cdn.jayh.club/css/sidebar.min.css" />
  <link rel="stylesheet" href="http://cdn.jayh.club/css/sidebar-folder.min.css" />
  <!-- 自定义特色样式：by myself -->
  <link rel="stylesheet" href="http://cdn.jayh.club/css/me.css">
  <!-- <link rel="stylesheet" href="http://cdn.jayh.club/css/toc.css"> -->

  <style>
    /*加重描述strong*/
    .markdown-section strong {
      color: rgb(239, 112, 96);
    }


    h2 span {
      display:inline-block;
      background: rgb(66, 185, 131);
      color:#ffffff;
      padding:  10px  16px;
      border-radius:5px;
      box-shadow: 1px 1px 3px black;
    }

    ol, ul, li{
      line-height: 27px !important;
      font-size: 16px !important;
    }

    section.cover h1 {
      margin: 0;
    }

    @media (max-width:600px) {
      pre {
        padding-left: 3px !important;
        padding-right: 3px !important;
        margin-left: -20px !important;
        margin-right: -20px !important;
        box-shadow: 0px 0px 20px 0px #f7f7f7 !important;
      }

      /*代码块复制按钮默认隐藏*/
      .docsify-copy-code-button {
        display: none;
      }

      .advertisement{
        display: none;
      }

    }

    .markdown-section pre {
      padding-left: 0 !important;
      padding-right: 0px !important;
    }

    .markdown-section {
      margin: 0 3.2% !important;
    }

    a.section-link{
      font-size: .9rem !important;
    }

    .close-advertisement {
      position: fixed;
      right: 30px;
      top: 70px;
      z-index: 99;
      display: flex;
      flex-direction: row;
    }

    .close-advertisement .image {
      width: 29px;
      height: 29px;
      max-width: 50px;
    }

    .close-advertisement .text {
      font-size: 10px;
      align-self: center;
    }

    .advertisement {
      position: fixed;
      right: 10px;
      top: 100px;
      width: 120px;
      box-shadow: -1px 0 2px 0px #c5ebda;
      padding: 10px;
      z-index: 99;
      background-color: #fff;
      text-align: center;
    }

    .advertisement p,
    h4 {
      margin: 0;
      padding: 0;
    }

    .advertisement .tencent_qrcode h4 {
      font-size: 12px;
      color: #25a46a;
      margin-bottom: 10px;
    }

    .wechat .wechat_qrcode h4 {
      font-size: 12px;
      color: #25a46a;
      margin-bottom: 10px;
    }

    .wechat {
      position: fixed;
      right: 10px;
      top: 270px;
      width: 120px;
      box-shadow: -1px 0 2px 0px #c5ebda;
      padding: 10px;
      z-index: 99;
      background-color: #fff;
      text-align: center;
    }

    .knowledge-planet {
      position: fixed;
      right: 10px;
      top: 424px;
      width: 120px;
      box-shadow: -1px 0 2px 0px #c5ebda;
      padding: 10px;
      z-index: 99;
      background-color: #fff;
      text-align: center;
    }

    .knowledge-planet .qrcode {
      margin: auto;
      width: 80%;
      height: 80%;
    }

    .knowledge-planet .qrcode h4 {
      font-size: 12px;
      color: #25a46a;
      margin-bottom: 10px;
    }



    /*滚动条样式 start*/
    /* 滚动条宽度 */
    ::-webkit-scrollbar{width:5px;}
    /* 滚动条颜色 */
    ::-webkit-scrollbar-thumb{
      background: #33a9dc;
      background-image: linear-gradient(#6ecd56, #33a9dc, #cb6196, #c16290);
      border-radius: 2em;
    }

  </style>
  <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css"> -->
  
  <!-- alert 样式 -->
  <link rel="stylesheet" href="http://cdn.jayh.club/css/sweetalert.min.css" type='text/css' media='all' />
  <!-- 复制提醒 -->
  <script src="http://cdn.jayh.club/js/sweetalert.min.js"></script>

  <script src="https://unpkg.com/docsify-plugin-flexible-alerts"></script>

  <script>
	var _hmt = _hmt || [];
	(function() { 
    // MARK: ===========================百度统计，请移除此处代码==============================
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?c70166876c49625d2a39ad01a26ff538";
    var s = document.getElementsByTagName("script")[0]; 
    s.parentNode.insertBefore(hm, s);
    // ================================== END ==============================================
	})();
  </script>
  
</head>
<body>
  <div id="app">🏃‍🏃‍🏃‍💨 加载中...</div>
  <div class="close-advertisement" id="closeAdvertisement">
    <img class="image" id="hiddenQrcode" title="隐藏"  onclick="hiddenQrcode()" src="./images/common/hidden.png"> </img>
    <img class="image" id="displayQrcode" title="显示"  onclick="displayQrcode()" src="./images/common/display.png"> </img>
    <span class="text">纯净版</span>
  </div>
  <div id="asideContainer">
    <div class="aside_container">
      <div class="advertisement">
        <div class="tencent_qrcode">
          <h4>更多精品文章</h4>
          <p style="font-size: 12px; color: #25a46a;">悟空聊架构</p>
          <img src="./images/common/wechat_public_qrcode.jpeg" alt="EnjoyToShare" />
        </div>
      </div>
    </div>
    <div class="aside_container2">
      <div class="wechat">
        <div class="wechat_qrcode">
          <h4>500人技术交流</h4>
          <img src="./images/common/wechat_personal_qrcode.jpeg" alt="EnjoyToShare" />
        </div>
      </div>
    </div>
    <div class="aside_container3">
      <div class="knowledge-planet">
        <div class="qrcode">
          <h4>技术1v1指导</h4>
          <img src="./images/common/knowledge_planet_qrcode.jpg" alt="EnjoyToShare" />
        </div>
      </div>
    </div>
  </div>
  <div id="gitalk-container"></div>

  <script>
    window.$docsify = {
      name: '🌈PassJava 博客连载中',
      repo: 'https://github.com/jackson0714/PassJava-Learning',
      // toc: {
      //   tocMaxLevel: 5,
      //   target: 'h2, h3, h4, h5, h6'
      // },
      'flexible-alerts': {
        style: 'flat'
      },
      count:{
        countable: true,
        position: 'top',
        margin: '10px',
        float: 'right',
        fontsize:'0.9em',
        color:'rgb(90,90,90)',
        language:'chinese',
        localization: {
          words: "",
          minute: ""
        },
        isExpected: true
      },
      loadNavbar: true,
      loadSidebar: true, // 加载自定义侧边栏
      maxLevel: 2, // 默认情况下会抓取文档中所有标题渲染成目录，可配置最大支持渲染的标题层级。
      subMaxLevel: 4, // 生成目录的最大层级
      mergeNavbar: true, // 小屏设备下合并导航栏到侧边栏
      coverpage: true,
      auto2top: true,
      search: {
        placeholder: '搜索',
        noData: '找不到结果!',
        depth: 3
      },
      alias: { // 定义路由别名，可以更自由的定义路由规则。 支持正则
        '/.*/_sidebar.md': '/_sidebar.md',//防止意外回退
        '/.*/_navbar.md': '/_navbar.md'
      },
      pagination: {
        previousText: '上一篇',
        nextText: '下一篇',
        crossChapter: true,
        crossChapterText: true
      },
      darkMode: {
        light: {
          toggleBtnBg: '#42b983'
        }
      },
      copyCode: {
        buttonText : '复制',
        errorText  : '复制失败',
        successText: '复制成功'
      },
      plugins: [
        function (hook) {
          var header = [
            '<p>',
              // '<a href="https://www.aliyun.com/sale-season/2020/procurement-new-members?userCode=thp9caen">',
              //'<img src="https://img-blog.csdnimg.cn/20210719222911357.png" alt="公众号" width="430px" height="136px" style="margin-top:-70px">',
              //'<img src="https://img-blog.csdnimg.cn/2021071922263371.png" alt="知识星球" width="327px" height="145px" style="margin-top:-70px">',
              //'<br/>',
              '<span><a href="http://www.passjava.cn/" target="_blank">从零学架构认准： 悟空聊架构 www.passjava.cn</a></span>',
              '</p>'
          ].join('');
          var footer = [
            '<hr/>',
            '<footer style="text-align: center">',
              '<p>',
              // '<a href="https://www.aliyun.com/sale-season/2020/procurement-new-members?userCode=thp9caen">',
              //'<img src="http://cdn.jayh.club/blog/20200910/8cQn6wSJtQND.png?imageslim" alt="公众号" width="557px" height="294px">',
              '<img src="https://img-blog.csdnimg.cn/20210522084205664.png" alt="公众号" width="557px" height="294px">',
              '<img src="https://oscimg.oschina.net/oscnet/up-a2f2ba3e2ec0d84f7b895c5476d98f202dc.png" alt="微信" width="557px" height="294px">',
            '</p>',
            '<p id="sitetime"></p>',
            '<span><a href="https://beian.miit.gov.cn/" target="_blank">鄂ICP备19010052号-2</a></span>',
            '</footer>'
          ].join('');
          hook.afterEach(function (html) {
            var isReadme = window.location.href.indexOf("README");
            if (isReadme === -1) {
              return header + html + footer;
            } else {
              return html + footer;
            }
          });
        }
      ]
    }
  </script>
  <script src="http://cdn.jayh.club/js/docsify.min.js"></script>
  <!-- <script src="http://cdn.jayh.club/js/docsify-plugin-toc.min.js"></script> -->
  <script src="http://cdn.jayh.club/js/countable.min.js"></script>
  <script src="http://cdn.jayh.club/js/prism-c.min.js"></script>
  <script src="http://cdn.jayh.club/js/prism-bash.min.js"></script>
  <script src="http://cdn.jayh.club/js/prism-cpp.min.js"></script>
  <script src="http://cdn.jayh.club/js/prism-json.min.js"></script>
  <script src="http://cdn.jayh.club/js/prism-java.min.js"></script>
  <script src="http://cdn.jayh.club/js/prism-python.min.js"></script>
  <script src="http://cdn.jayh.club/js/docsify-copy-code"></script>
  <script src="http://cdn.jayh.club/js/search.js"></script>
  <script src="http://cdn.jayh.club/js/emoji.js"></script>
  <script src="http://cdn.jayh.club/js/zoom-image.js"></script>
  <script src="http://cdn.jayh.club/js/index.js"></script>
  <script src="http://cdn.jayh.club/js/docsify-pagination.min.js"></script>
	<script src="http://cdn.jayh.club/js/docsify-sidebar-collapse.min.js"></script>
  <script src="http://cdn.jayh.club/js/jquery-3.6.0.min.js"></script>
  <!-- mouse click -->
  <script src="http://cdn.jayh.club/js/click_heart.js"></script>

  <!-- 美化提示样式 -->
  <script src="http://cdn.jayh.club/js/docsify-plugin-flexible-alerts.min.js"></script>
  <!-- <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/gitalk.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script> -->
  <!-- 访问量统计 -->
  <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
  <script>

    // 纯净版功能
    $("#displayQrcode").hide();
    checkPhone();
    function hiddenQrcode() {
      $("#asideContainer").toggle(500);
      $("#displayQrcode").show();
      $("#hiddenQrcode").hide();
      $("#live2d").hide();
      $("#live2dcanvas").hide();
    }

    function displayQrcode() {
      $("#asideContainer").toggle(500);
      $("#displayQrcode").hide();
      $("#hiddenQrcode").show();
      $("#live2d").show();
      $("#live2dcanvas").show();
    }

    function checkPhone(){  
     var userAgentInfo = navigator.userAgent;
     var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");  
     var flag = true;  
     for (var v = 0; v < Agents.length; v++) {  
         if (userAgentInfo.indexOf(Agents[v]) > 0) { 
          $("#displayQrcode").hide();
          $("#hiddenQrcode").show();
          $("#live2d").show();
          $("#live2dcanvas").show();
          break; 
        }  
     }  
  }


    // // 生成 gitalk 插件
    // title = location.hash.match(/#(.*?)([?]|$)/)
    // if (title != null) {
    //   title = location.hash.match(/#(.*?)([?]|$)/)[1]
    // }
    
    // // 限制 50 个字符
    // if (title != null) {
    //   title = decodeURI(title.substring(1, title.length))
    //   if (title.length >= 50) {
    //     title = title.substring(title.length - 50, title.length)
    //   }
    // } else {
    //   title = 'home page'
    // }

    // const gitalk = new Gitalk({
    //   clientID: '7de8e380bec2231f0544',
    //   clientSecret: '04347ec3cc38b5cef2c15938a3142c1836ed54fd',
    //   repo: 'PassJava-Learning',
    //   owner: 'Jackson0714',
    //   admin: ['Jackson0714'],
    //   // facebook-like distraction free mode
    //   distractionFreeMode: true,
    //   title: title,
    //   id: title,
    //   //id: location.pathname
    // })
    // // 监听URL中hash的变化，如果发现换了一个MD文件，那么刷新页面，解决整个网站使用一个gitalk评论issues的问题。
    // window.onhashchange = function(event){
    //   if(event.newURL.split('?')[0] !== event.oldURL .split('?')[0]) {
    //     location.reload()
    //   }
    // }
  </script>
  <!-- <script>        
    document.body.oncopy = function () {
      swal("复制成功 🎉",
              "若要转载或引用请务必保留原文链接，并申明来源。如果你觉得本仓库不错，那就来 GitHub 给个 Star 吧 😊   - by 悟空哥。如果复制失败，请切换 chrome 浏览器",
              "success"); };
  </script> -->

  <!-- 运行时间统计 -->
<script language=javascript>
  function siteTime() {
    window.setTimeout("siteTime()", 1000);
    var seconds = 1000;
    var minutes = seconds * 60;
    var hours = minutes * 60;
    var days = hours * 24;
    var years = days * 365;
    var today = new Date();
    var todayYear = today.getFullYear();
    var todayMonth = today.getMonth() + 1;
    var todayDate = today.getDate();
    var todayHour = today.getHours();
    var todayMinute = today.getMinutes();
    var todaySecond = today.getSeconds();
    /* Date.UTC() -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
    year - 作为date对象的年份，为4位年份值
    month - 0-11之间的整数，做为date对象的月份
    day - 1-31之间的整数，做为date对象的天数
    hours - 0(午夜24点)-23之间的整数，做为date对象的小时数
    minutes - 0-59之间的整数，做为date对象的分钟数
    seconds - 0-59之间的整数，做为date对象的秒数
    microseconds - 0-999之间的整数，做为date对象的毫秒数 */
    var t1 = Date.UTC(2020, 08, 17, 00, 00, 00); //北京时间2020-02-10 00:00:00
    var t2 = Date.UTC(todayYear, todayMonth, todayDate, todayHour, todayMinute, todaySecond);
    var diff = t2 - t1;
    var diffYears = Math.floor(diff / years);
    var diffDays = Math.floor((diff / days) - diffYears * 365);
    var diffHours = Math.floor((diff - (diffYears * 365 + diffDays) * days) / hours);
    var diffMinutes = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours) / minutes);
    var diffSeconds = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours - diffMinutes * minutes) / seconds);
    //document.getElementById("sitetime").innerHTML = " 本网站已运行 " + diffYears + " 年 " + diffDays + " 天 " + diffHours + " 小时 " + diffMinutes + " 分钟 " + diffSeconds + " 秒 ";
  }
  siteTime();
</script>


<!-- 回到顶部
<script src="https://github.com/Jackson0714/NoteBook/blob/master/plugin/jquery.js"></script>
<script src="https://github.com/Jackson0714/NoteBook/blob/master/plugin/jquery.goup.js"></script>
  
<script type="text/javascript">
  $(document).ready(function () {
    $.goup({
      trigger: 100,
      bottomOffset: 32,
      locationOffset: 32,
      title: 'TOP',
      titleAsText: true
    });
  });
</script> -->



<!-- 左下角看板娘动漫 -->
<!-- <script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js"></script> -->

<script>
  L2Dwidget.init({
    "model": {
      //jsonpath控制显示那个小萝莉模型，
      //(切换模型需要改动)
      jsonPath: "https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json",
      "scale": 1
    },
    "display": {
      "position": "left", //看板娘的表现位置
      "width": 70,  //小萝莉的宽度
      "height": 140, //小萝莉的高度
      "hOffset": 35,
      "vOffset": -20
    },
    "mobile": {
      "show": true,
      "scale": 1
    },
    "react": {
      "opacityDefault": 0.7,
      "opacityOnHover": 0.2
    }
  });
</script>

<!-- 右下角看板娘 -->
<script src="http://cdn.jayh.club/js/autoload1.2.js"></script>


</body>
</html>
